<?php

/**
 * 변수 디버깅
 *
 * @author cwsong
 * @since 2011.04.28
 * @param object $var 디버그할 변수
 */
function debug($var) {
    echo "<pre>";
    print_r($var);
    echo "</pre><hr /><br />";
}

/**
 * 변수디버깅 후 파일에 로깅한다.
 *
 * @author cwsong
 * @since 2011.04.28
 * @param object $var 디버그할 변수
 */
function debug_log($var) {
    $toFile = print_r($var, true);
    $log = fopen(WP_PLUGIN_DIR . "/debug/debug_" . date("Y.m.d") . ".log", "a"); //a:append
    fwrite($log, "\nTIME : " . date("Y.m.d H:i:s") . "\n");
    fwrite($log, $toFile);
    fwrite($log, "\n-----------------------------------------------------------");
    fclose($log);
}

/**
 * 함수가 실행된 파일명을 출력한다.
 * 
 * @author cwsong
 * @since 11. 5. 12 오후 5:29 
 */
function debug_filename() {
    $dbt = debug_backtrace();
    $file = $dbt[0]['file'];
    if (preg_match('/\//', $file)) {
        $arr = explode('/', $file);
    } else if (preg_match('/\\\/', $file)) {
        $arr = explode('\\', $file);
    }
    echo '[ FILE : ' . $arr[count($arr) - 1] . ' ]';
}

/**
 * 파일명을 입력받아 이름부분과 확장자부분으로 나누어진 배열을 반환한다.
 * 
 * @param type $filename
 * @return array 파일명, 확장자 정보가 담긴 배열
 */
function seoul_get_file_splitted($filename) {
    $result = array();
    $ext = end(explode('.', $filename));
    $result[] = str_replace('.' . $ext, '', $filename);
    $result[] = $ext;
    return $result;
}

/**
 * 쿼리스트링을 만들어 반환한다.
 * 
 * @param array $arr 
 * @param string $var_name
 * @param array $except 제거할 변수
 * @param array $add 추가할 변수
 * @return string 쿼리스트링 
 */
function seoul_get_query_string($arr='', $var_name='', $except='', $add='') {
    if ($arr == '') {
        $arr = array_merge_recursive($_GET, $_POST);
        if (is_array($except))
            foreach ($except as $exp)
                unset($arr[$exp]);
        if (is_array($add))
            $arr = array_merge_recursive($arr, $add);
        return seoul_get_query_string($arr);
    } else {
        $return = array();
        foreach ($arr as $var => $val) {
            if (is_array($val)) {
                $tmp_var = ($var_name) ? $var_name . "[" . $var . "]" : $var;
                $return[] = seoul_get_query_string($val, $tmp_var);
            } else if ($val) {
                if ($var_name) {
                    $idx = (is_string($var)) ? $var : "";
                    $tmp_val = $var_name . "[" . $idx . "]=" . urlencode($val);
                    if (!in_array($tmp_val, $return))
                        $return[] = $tmp_val;
                } else {
                    $tmp_val = $var . "=" . urlencode($val);
                    if (!in_array($tmp_val, $return))
                        $return[] = $tmp_val;
                }
            }
        }
        return implode("&", $return);
    }
}

/**
 * byte단위의 숫자를 변환해서 반환한다.
 * 
 * @param long $bytes
 * @param int $exp
 * @return string 변환된 문자열
 */
function seoul_byte_convert($bytes, $exp=0) {
    $symbol = array('Byte', 'KByte', 'MByte', 'GByte', 'TByte', 'PByte', 'EByte', 'ZByte', 'YByte');

    $exp = 0;
    $converted_value = 0;
    if ($bytes > 0) {
        $exp = floor(log($bytes) / log(1024));
        $converted_value = ( $bytes / pow(1024, floor($exp)) );
    }

    return sprintf('%.2f ' . $symbol[$exp], $converted_value);
}

?>
